package cd.cdyb.sms.service;

import cd.cdyb.sms.dto.PageResult;
import cd.cdyb.sms.dto.SmsExcessDto;
import cd.cdyb.sms.dto.expand.ExCompanyDto;
import cd.cdyb.sms.dto.query.CompanyQueryDto;
import cd.cdyb.sms.exception.BusinessException;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author lin
 * @since 2024-05-14
 */
public interface CompanyService {

    /**
     * 新增
     */
    void insertCompany(ExCompanyDto exCompanyDto) throws BusinessException;

    /**
     * 更新
     */
    void updateCompany(ExCompanyDto exCompanyDto) throws BusinessException;

    /**
     * 查询公司分页
     *
     * @param companyQueryDto 查询条件
     * @return 查询结果
     */
    PageResult<ExCompanyDto> findCompanyPage(CompanyQueryDto companyQueryDto);

    /**
     * 通过ID查询公司详情
     *
     * @param companyId ID
     * @return 公司详情
     */
    ExCompanyDto getCompanyById(Integer companyId);

    /**
     * 获取短信余额
     */
    SmsExcessDto getSmsExcessWithClient(Integer companyId);

    /**
     * 获取短信余额
     */
    List<SmsExcessDto> getSmsExcessWithAdmin();

    /**
     * 通过key获取缓存的公司信息
     *
     * @param companyKey 公司key
     * @return 公司信息
     */
    ExCompanyDto getCacheCompanyByKey(String companyKey);

    /**
     * 通过key获取公司信息
     *
     * @param companyKey 公司key
     * @return 公司信息
     */
    ExCompanyDto getCompanyByKey(String companyKey);

    /**
     * 列表
     */
    List<ExCompanyDto> findCompanyList();
}
